From: cwc22@centipede.cl.cam.ac.uk Date: Fri, 11 Mar 2005 16:04:54 +0000 (+0000) Subject: bitkeeper revision 1.1236.25.4 (4231c1a6aZYdlOMWe-sDNCbcYqausA) X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~17857^2~26^2~17 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:///%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22man:/?a=commitdiff_plain;h=a1056f92eb44faf34a40482094efd6ebf3c326da;p=xen.git bitkeeper revision 1.1236.25.4 (4231c1a6aZYdlOMWe-sDNCbcYqausA) grant tables: tiny tiny change to maptracking in unmap ref. --- diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index e5c5f92763..fceee60984 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -296,7 +296,6 @@ __gnttab_map_grant_ref( _PAGE_DIRTY | ((flags & GNTMAP_readonly) ? 0 : _PAGE_RW), ld, led ); - DPRINTK("update_grant_va_mapping : rc %d\n", rc); spin_lock(&rd->grant_table->lock); @@ -389,7 +388,7 @@ __gnttab_unmap_grant_ref( active_grant_entry_t *act; grant_entry_t *sha; grant_mapping_t *map; - s16 rc = -EFAULT; + s16 rc = 1; unsigned long frame, virt; ld = current->domain; @@ -431,8 +430,6 @@ __gnttab_unmap_grant_ref( act = &rd->grant_table->active[ref]; sha = &rd->grant_table->shared[ref]; - // cwc22: TODO: put_maptrack_handle - spin_lock(&rd->grant_table->lock); if ( frame != 0 ) @@ -443,10 +440,14 @@ __gnttab_unmap_grant_ref( if ( map->ref_and_flags & GNTMAP_device_map ) act->pin -= (map->ref_and_flags & GNTMAP_readonly) ? GNTPIN_devr_inc : GNTPIN_devw_inc; + + map->ref_and_flags &= ~GNTMAP_device_map; + (void)__put_user(0, &uop->dev_bus_addr); } else frame = act->frame; + /* frame is now unmapped for device access */ if ( (virt != 0) && (map->ref_and_flags & GNTMAP_host_map) && @@ -485,13 +486,17 @@ __gnttab_unmap_grant_ref( goto fail; } + map->ref_and_flags &= ~GNTMAP_host_map; + act->pin -= (map->ref_and_flags & GNTMAP_readonly) ? GNTPIN_hstr_inc : GNTPIN_hstw_inc; - rc = 0; *va = virt; } + if ( (map->ref_and_flags & (GNTMAP_device_map|GNTMAP_host_map)) == 0) + put_maptrack_handle(ld->grant_table, handle); + /* If the last writable mapping has been removed, put_page_type */ if ( ((act->pin & (GNTPIN_devw_mask|GNTPIN_hstw_mask)) == 0) && !(map->ref_and_flags & GNTMAP_readonly) )